package edu.ccut.saturn.component;

import org.osgi.framework.Bundle;

/**
 * 定义了资源类型。资源描述了在bundle的根路径下的配置文件或路径信息，分别对应于文件资源类型<code>IFileResourceInfo</code>和路径资源类型<code>IDirectoryInfo</code>。
 * 资源类型定义了加载、卸载资源的方法。类型<code>IBundleInfo</code>保存了一个bundle中所有资源的被加载后的信息。
 * 
 * @author 谷钰
 * @author 温建
 * 
 * @version 1.0 2008.8.26
 * 
 * @see IBundleInfo
 * @see IFileResourceInfo
 * @see IDirectoryInfo
 * 
 */
//TODO：命名是否有问题，同INodeInfo
//TODO:可以合并文件夹和文件资源
public interface IResourceInfo {
	
	/**
	 * 向bundle对应的<code>IBundleInfo</code>实例中加载资源信息
	 * 
	 * @param bundle  资源所在的bundle实例，记录了资源的存放位置
	 * @param bundleInfo  保存bundle的加载信息
	 * @throws SaturnComponentException
	 */
	public void load(Bundle bundle, IBundleInfo bundleInfo)
			throws SaturnComponentException;
	
	/**
	 * 从bundle对应的<code>IBundleInfo</code>实例中卸载资源加载的信息
	 * 
	 * @param bundle  资源所在的bundle实例，记录了资源的存放位置
	 * @param bundleInfo  保存bundle的加载信息
	 * @throws SaturnComponentException
	 */
	public void unload(Bundle bundle, IBundleInfo bundleInfo)
			throws SaturnComponentException;
}
